#ifndef __CAMERA_H__
#define __CAMERA_H__

#include <glm/glm.hpp>
#include "SceneNode.h"
#include "Frustum.h"

namespace Hope {

	class Camera : public SceneNode
	{
	public:

		Camera();
		Camera(float fov, float near, float far);
		~Camera();

		void SetNearClip(float nearClip);
		void SetFarClip(float farClip);
		void SetFOV(float fov);

        const Frustum & GetFrustum();

	private:
		float m_fov{90.f};
		float m_near{1.f};
		float m_far{1000.f};
        float m_aspectRatio{ 1.f };

		glm::mat4 m_view;
		glm::mat4 m_proj;

        bool m_frustumDirty{true};
        Frustum m_frustum;
	};

}

#endif